#include "hash.hpp"
//#include "unordered_map.hpp"
#include "unordered_set.hpp"
//using namespace close_hash;
using namespace link_hash;

// void Test1()
// {
//     close_hash::HashTable<int> h;
//     h.insert(7);
//     h.insert(17);
//     h.insert(27);
//     h.insert(37);
//     h.insert(47);
//     h.insert(48);
//     h.insert(58);
//     h.insert(68);
//     h.insert(78);
//     h.insert(88);
//     h.insert(98);
//     h.insert(108);
//     h.insert(118);
//     h.Print();

//     // h.erase(17);
//     // h.erase(7);
//     // h.Print();
// }

// void Test2()
// {
//     link_hash::HashTable<int, int> h;
//     h.insert(std::make_pair(5, 5));
//     h.insert(std::make_pair(15, 15));
//     h.insert(std::make_pair(25, 25));
//     h.insert(std::make_pair(3, 3));
//     h.insert(std::make_pair(13, 13));
//     h.insert(std::make_pair(8, 8));
//     h.insert(std::make_pair(12, 12));
//     h.insert(std::make_pair(22, 22));
//     h.Print();
//     std::cout << std::endl;

//     h.erase(std::make_pair(13, 13));
//     h.erase(std::make_pair(15, 15));
//     h.Print();
// }

// void Test3()
// {
//     link_hash::HashTable<int, std::pair<int,int>> h;
//     h.insert(std::make_pair(5, 5));
//     h.insert(std::make_pair(15, 15));
//     h.insert(std::make_pair(25, 25));
//     h.insert(std::make_pair(3, 3));
//     h.insert(std::make_pair(13, 13));

//     link_hash::HashTable<int, std::pair<int,int>>::iterator lt = h.begin();
//     while(lt != h.end())
//     {
//         std::cout << lt._node->_val.second << std::endl;
//         ++lt; 
//     }
//     std::cout << std::endl;
// }

// void Test4()
// {
//     link_hash::HashTable<int, std::pair<int,int>> h;
//     h.insert(std::make_pair(5, 5));
//     h.insert(std::make_pair(15, 15));
//     h.insert(std::make_pair(25, 25));
//     h.insert(std::make_pair(3, 3));
//     h.insert(std::make_pair(13, 13));

//     link_hash::HashTable<int, std::pair<int,int>> copy(h);
//     copy.Print();

//     link_hash::HashTable<int, std::pair<int,int>> hh;
//     hh.insert(std::make_pair(8, 8));
//     hh.insert(std::make_pair(18, 18));
//     hh.insert(std::make_pair(23, 23));
//     h = hh;
//     h.Print();
// }

int main()
{
    //Test1();

    //Test2();

    //Test3();

    //Test4();

    //ns_unordered_map::Test();

    ns_unordered_set::Test();
    

    return 0;
}